home *** CD-ROM | disk | FTP | other *** search
/ PC Media 2 / PC MEDIA CD02.iso / share / prog / tpsorts / stand_io.inc < prev    next >
Encoding:
Text File  |  1986-03-12  |  2.0 KB  |  84 lines

  1.  
  2. {
  3. PC-DOS standard input-output routines;
  4.  
  5. enter with:
  6.            bytes =number bytes to read into buffer;
  7.            error =undefined;
  8.            dtaseg=buffer segment;
  9.            datofs=  "    offset;
  10.  
  11.  
  12. returns   :
  13.            bytes=number bytes actually read/written;
  14.            error=00  :ok;
  15.                  01  :attempt to read past end of file;
  16.                  02  :bytes read<>bytes requested;
  17.                  -1  :bytes written<>bytes requested;
  18.  
  19. (c) 1985 Renaissance Software
  20.  
  21. }
  22.  
  23.  
  24.  
  25. procedure stdread(var bytes,error   : integer;
  26.                       dtaseg,dtaofs : integer);
  27.  
  28. var
  29.    register:record
  30.                   ax,bx,cx,dx,bp,si,di,ds,es,flags:integer;
  31.             end;
  32.  
  33. begin
  34.      with register do begin
  35.           ax:=$3F00;
  36.           bx:=$0000;
  37.           cx:=bytes;
  38.           ds:=dtaseg;
  39.           dx:=dtaofs;
  40.           msdos(register);
  41.           if (ax=bytes) then
  42.              error:=$00
  43.           else
  44.               if (ax=0) then
  45.                  error:=$01
  46.               else
  47.                   error:=$02;
  48.           bytes:=ax;
  49.      end;
  50. end;  {stdread}
  51.  
  52. {
  53.  ---------------------------------------------------------------
  54.                                                                 }
  55.  
  56. procedure stdwrite(var bytes,error   : integer;
  57.                        dtaseg,dtaofs : integer);
  58.  
  59. var
  60.    register:record
  61.                   ax,bx,cx,dx,bp,si,di,ds,es,flags:integer;
  62.             end;
  63.  
  64.  
  65. begin
  66.       with register do begin
  67.           ax:=$4000;
  68.           bx:=$0001;
  69.           cx:=bytes;
  70.           ds:=dtaseg;
  71.           dx:=dtaofs;
  72.           msdos(register);
  73.           if (ax=bytes) then
  74.              error:=$00
  75.           else
  76.               error:=$ffff;
  77.           bytes:=ax;
  78.      end;
  79. end;   {stdwrite}
  80.  
  81. {
  82.  ---------------------------------------------------------------
  83.                                                                 }
  84.